﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DTO
{
    public class CListKeyCode
    {
        CKeycode[] _ListKey;

        public CKeycode[] ListKey
        {
            get { return _ListKey; }
            set { _ListKey = value; }
        }

        public void Add(string KeyName, int KeyCode)
        {
            Array.Resize(ref _ListKey, _ListKey.Length + 1);
            _ListKey[_ListKey.Length-1] = new CKeycode(KeyName, KeyCode);
        }

        public void Add(string KeyName, Keys KeyCode)
        {
            Array.Resize(ref _ListKey, _ListKey.Length + 1);
            _ListKey[_ListKey.Length-1] = new CKeycode(KeyName, (int)KeyCode);
        }

        public CListKeyCode()
        {
            _ListKey = new CKeycode[0];
            Add("Ctrl", Keys.ControlKey);
            Add("LCtrl", Keys.LControlKey);
            Add("RCtrl", Keys.RControlKey);
            Add("Alt", Keys.Menu);
            Add("LAlt", Keys.LMenu);
            Add("RAlt", Keys.RMenu);
            Add("Shift", Keys.ShiftKey);
            Add("LShift", Keys.LShiftKey);
            Add("RShift", Keys.RShiftKey);
            Add("Win", Keys.LWin);
            Add("RWin", Keys.RWin);
            Add("LWin", Keys.LWin);
            Add("Space", Keys.Space);
            Add(" ", Keys.Space);
            Add("ESC", Keys.Escape);
            Add("F1", Keys.F1);
            Add("F2", Keys.F2);
            Add("F3", Keys.F3);
            Add("F4", Keys.F4);
            Add("F5", Keys.F5);
            Add("F6", Keys.F6);
            Add("F7", Keys.F7);
            Add("F8", Keys.F8);
            Add("F9", Keys.F9);
            Add("F10", Keys.F10);
            Add("F11", Keys.F11);
            Add("F12", Keys.F12);
            Add("F13", Keys.F13);
            Add("F14", Keys.F14);
            Add("F15", Keys.F15);
            Add("F16", Keys.F16);
            Add("F17", Keys.F17);
            Add("F18", Keys.F18);
            Add("F19", Keys.F19);
            Add("F20", Keys.F20);
            Add("F21", Keys.F21);
            Add("F22", Keys.F22);
            Add("F23", Keys.F23);
            Add("F24", Keys.F24);
            Add("A", Keys.A);
            Add("B", Keys.B);
            Add("C", Keys.C);
            Add("D", Keys.D);
            Add("E", Keys.E);
            Add("F", Keys.F);
            Add("G", Keys.G);
            Add("H", Keys.H);
            Add("I", Keys.I);
            Add("J", Keys.J);
            Add("K", Keys.K);
            Add("L", Keys.L);
            Add("M", Keys.M);
            Add("N", Keys.N);
            Add("O", Keys.O);
            Add("P", Keys.P);
            Add("Q", Keys.Q);
            Add("R", Keys.R);
            Add("S", Keys.S);
            Add("T", Keys.T);
            Add("U", Keys.U);
            Add("V", Keys.V);
            Add("W", Keys.W);
            Add("X", Keys.X);
            Add("Y", Keys.Y);
            Add("Z", Keys.Z);
            Add("`", Keys.Oemtilde);
            Add("0", Keys.D0);
            Add("1", Keys.D1);
            Add("2", Keys.D2);
            Add("3", Keys.D3);
            Add("4", Keys.D4);
            Add("5", Keys.D5);
            Add("6", Keys.D6);
            Add("7", Keys.D7);
            Add("8", Keys.D8);
            Add("9", Keys.D9);
            Add("-", Keys.OemMinus);
            Add("=", Keys.Oemplus);
            Add("[", Keys.OemOpenBrackets);
            Add("]", Keys.OemCloseBrackets);
            Add(";", Keys.Oem1);
            Add("'", Keys.Oem7);
            Add(",", Keys.Oemcomma);
            Add(".", Keys.OemPeriod);
            Add("?", Keys.OemQuestion);
            Add("\\", Keys.Oem5);
            Add("Back", Keys.Back);
            Add("BackBar", Keys.Back);
            Add("Tab", Keys.Tab);
            Add("ENTER", Keys.Return);
            Add("Return", Keys.Return);
            Add("Capslock", Keys.CapsLock);
            Add("NumLock", Keys.NumLock);
            Add("N/", Keys.Divide);
            Add("N*", Keys.Multiply);
            Add("N-", Keys.Subtract);
            Add("N+", Keys.Add);
            Add("N.", Keys.Decimal);
            Add("N0", Keys.NumPad0);
            Add("N1", Keys.NumPad1);
            Add("N2", Keys.NumPad2);
            Add("N3", Keys.NumPad3);
            Add("N4", Keys.NumPad4);
            Add("N5", Keys.NumPad5);
            Add("N6", Keys.NumPad6);
            Add("N7", Keys.NumPad7);
            Add("N8", Keys.NumPad8);
            Add("N9", Keys.NumPad9);
            Add("↑", Keys.Up);
            Add("↓", Keys.Down);
            Add("←", Keys.Left);
            Add("→", Keys.Right);
            Add("Up", Keys.Up);
            Add("Down", Keys.Down);
            Add("Left", Keys.Left);
            Add("Right", Keys.Right);
            Add("RIGHTCLICK", Keys.Apps);
            Add("Insert", Keys.Insert);
            Add("Home", Keys.Home);
            Add("PageUp", Keys.PageUp);
            Add("pageDown", Keys.PageDown);
            Add("Delete", Keys.Delete);
            Add("End", Keys.End);
            Add("ScrollLock", Keys.Scroll);
            Add("PrintScreen", Keys.PrintScreen);
            Add("PageUp", Keys.PageUp);
            Add("PageDown", Keys.PageDown);
            Add("Pause", Keys.Pause);
        }
    }
}
